package ar.edu.unq.persistencia.apuesta;

import ar.edu.unq.persistencia.jugador.Jugador;

public class Apuesta {

    public static final String TIPO = "tipo";

    public static final String FICHAS = "cantidad";

    public void setNumero(final int numero) {
        this.numero = numero;
    }

    private Jugador apostador;

    private String nombreApostador;

    private TipoApuesta tipo;

    private int numero = 0;

    private int cantidad;

    public Apuesta(final Jugador j, final TipoApuesta t, final int nro, final int cant) {

        this.setApostador(j);
        this.tipo = t;
        this.numero = nro;
        this.cantidad = cant;
        System.out.println("Se generó la apuesta " + t + " de " + j.getNombre() + " de $" + cant + " para el numero "
                + nro);

    }

    /*
     * public Apuesta(Jugador jug, TipoApuesta par, int i) { this.setApostador(jug); this.setTipo(par);
     * this.setCantidad(i); }
     */

    public Apuesta() {

    }

    public Apuesta(final Jugador jogador, final Object t, final Object object, final Object object2) {
        this.apostador = jogador;
    }

    @Override
    public boolean equals(final Object obj) {

        Apuesta a = (Apuesta) obj;

        return a.getApostador().equals(this.apostador) && a.getNumero() == this.numero && a.getTipo().equals(this.tipo);

    }

    /* GETTERS & SETTER */

    public TipoApuesta getTipo() {
        return this.tipo;
    }

    public void setTipo(final TipoApuesta tipo) {
        this.tipo = tipo;
    }

    public int getNumero() {
        return this.numero;
    }

    public void setNumero(final Integer numero) {
        this.numero = numero;
    }

    public int getCantidad() {
        return this.cantidad;
    }

    public void setCantidad(final int cantidad) {
        this.cantidad = cantidad;
    }

    public void setApostador(final Jugador apostador) {
        this.apostador = apostador;
        this.nombreApostador = apostador.getNombre();
    }

    public Jugador getApostador() {
        return this.apostador;
    }

    public String getNombreApostador() {
        return this.nombreApostador;
    }

    /* METHODS */

    public boolean buscarGanadores(final int numeroQueSalio) {

        return this.tipo.ganoCon(numeroQueSalio, this);

    }

    public int cuantoPagas() {

        return this.getCantidad() * this.tipo.multiplicidad();
    }

    @Override
    public String toString() {
        return this.apostador.getNombre() + " " + this.tipo + " " + this.numero + " " + this.cantidad;
    }

}
